package com.huluobo.a2203kotlinjetpackdemo.hilt

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import androidx.activity.viewModels
import com.huluobo.a2203kotlinjetpackdemo.R
import dagger.hilt.android.AndroidEntryPoint
import javax.inject.Inject

@AndroidEntryPoint
class HiltActivity : AppCompatActivity() {
    private val viewModel: LoginViewModel by viewModels() //与下方获取viewmodel形式等价

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_hilt)
//        val loginViewModel = ViewModelProvider(this)[LoginViewModel::class.java]

        //没有使用依赖注入的情况,通过实例化2个对象来调用内部类的方法
//        val mobilePhone = MobilePhone()
//        mobilePhone.dialNumber()

        //使用依赖注入的情况
//        val mobilePhone1 = MobilePhone()
//        val simCard = SimCard()
//        mobilePhone1.dialNumber2(simCard)

        viewModel.login().let {
            Log.i("TagA", "user:$it")
        }

//        val simCard = SimCard()
//        val mobilePhone = MobilePhone(simCard)
//        mobilePhone.dialNumber2()
    }
}

class SimCard @Inject constructor() {
    fun dialNumber() {
        Log.i("TagA", "拨打电话")
    }
}

class MobilePhone @Inject constructor(private val simCard: SimCard) {
    //没有使用依赖注入的情况
//    fun dialNumber() {
//        val simCard = SimCard()
//        simCard.dialNumber()
//    }

    fun dialNumber2() {
        simCard.dialNumber()
    }
}